package com.zyh.scs.admin.schedule;

import com.zyh.scs.admin.service.UserPsnInfoService;
import com.zyh.scs.admin.service.impl.temporary.PullFanWeiTemporaryService;
import com.zyh.scs.admin.service.jd.JDService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**
 * @author hwh
 * @ClassName: 泛微OA数据定时任务$
 * @Description: $
 * @Date $
 * @Version 1.0
 */
@Slf4j
@Component
@RequiredArgsConstructor
public class UserScheduleTask {

    private final PullFanWeiTemporaryService pullFanWeiTemporaryService;

    private final UserPsnInfoService psnInfoService;

    private final JDService jdService;

    /**
     * 定时 同步/更新 泛微OA 临时表中
     * 每天凌晨2点执行
     *
     * @return
     */
//    @Scheduled(cron = "0 0 2 * * ?")
    public void pullFanWei() {
        //泛微临时表
        pullFanWeiTemporaryService.pullFanWei();
    }

    /**
     * 定时 同步/更新 临时表中存到正式表中
     * 每天凌晨2点半执行
     *
     * @return
     */
//    @Scheduled(cron = "0 30 2 * * ?")
    public void insertNew() {
        //更新到表中
        pullFanWeiTemporaryService.insertNew();
    }

    /**
     * //     * 定时 同步/更新 更新用户到用户表中
     * //     * 每天凌晨3点执行
     *
     * @return
     */
//    @Scheduled(cron = "0 0 3 * * ?")
    public void updatePsnUser() {
        //更新用户
        pullFanWeiTemporaryService.updatePsnUser();
    }

    /**
     * 定时 同步/更新 预警和冻结
     * 每天凌晨3点半执行
     *
     * @return
     */
//    @Scheduled(cron = "0 30 3 * * ?")
    public void warmUser() {
        //泛微预警
        pullFanWeiTemporaryService.warmUser();
    }

    /**
     * 每月第一天 1点生成账单
     *
     * @return
     */
//    @Scheduled(cron = "0 0 1 1 * ?")
    private void insertBill() {
        //每月最后一天生成账单
        //生成交易流水
        psnInfoService.insertTransaction(LocalDateTime.now());
        //生成退款流水
        psnInfoService.insertDeduction(LocalDateTime.now());
        //生成餐补流水
        psnInfoService.insertCard(LocalDateTime.now());
        //生成现金流水
        psnInfoService.insertCash(LocalDateTime.now());
        //生成月末流水
        psnInfoService.insertCardAll(LocalDateTime.now());
        //业务账单
        psnInfoService.insertBusinessAccount(LocalDateTime.now());
        psnInfoService.insertPayMKBAccount(LocalDateTime.now());
        psnInfoService.insertPayJDAccount(LocalDateTime.now());
        psnInfoService.insertPayHDAccount(LocalDateTime.now());
        psnInfoService.insertMKBRechargeAccount(LocalDateTime.now());
        psnInfoService.insertBackend(LocalDateTime.now());
        psnInfoService.insertAccountPay(LocalDateTime.now());
        psnInfoService.insertJdBalanceAccount(LocalDateTime.now());
    }

    /**
     * 定时 同步/更新 满客宝部门/人员
     * 每五分钟执行一次
     *
     * @return
     */
//    @Scheduled(cron = "0 0/5 * * * ?")
    private void pullMkb() {
        psnInfoService.pushMkbDepAndUser();
    }

    /**
     * 京东定时任务  退款
     * 每一分钟执行一次
     *
     * @return
     */
//    @Scheduled(cron = "0 0/1 * * * ?")
    private void refund() {
        jdService.queryRefundOrder();
    }


    /**
     * 每天凌晨一天执行生成满客宝  京东  好店的日账单
     */
//    @Scheduled(cron = "0 0 1 * * ?")
    //TODO 暂时不需要每天生成的
    private void insertPayAccount() {
        psnInfoService.insertPayMKBAccount(LocalDateTime.now());
        psnInfoService.insertPayJDAccount(LocalDateTime.now());
        psnInfoService.insertPayHDAccount(LocalDateTime.now());
        psnInfoService.insertMKBRechargeAccount(LocalDateTime.now());
        psnInfoService.insertBackend(LocalDateTime.now());
    }

}
